// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.*;
// import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../SQLStatementImpl.h"
#include "../SQLReplaceable.h"
#include "SQLDropStatement.h"

class SQLDropSynonymStatement 
: virtual public SQLStatementImpl, 
virtual public SQLDropStatement, 
virtual public SQLReplaceable
{
public:
  SQLName_ptr name;
  BOOL_ptr ifExists;
  BOOL_ptr isPublic_;
  BOOL_ptr force;

  SQLDropSynonymStatement();

  SQLDropSynonymStatement(DbType_ptr dbType);
  SHAREDOBJECT(SQLDropSynonymStatement);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  // @Override
  SQLObject_list_ptr getChildren();

  SQLName_ptr getName();

  void setName(SQLName_ptr name);

  BOOL_ptr isIfExists();

  void setIfExists(BOOL_ptr ifExists);

  string_ptr getSchema();

  BOOL_ptr isPublic();

  void setPublic(BOOL_ptr aPublic);

  BOOL_ptr isForce();

  void setForce(BOOL_ptr force);

  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);
};
